package com.imooc.service;

import java.util.List;

public interface UserPermissionService {
    /**
     * 检查用户是否有权限执行特定操作
     * @param userId 用户ID
     * @param resource 资源
     * @param action 操作
     * @return 是否有权限
     */
    boolean checkPermission(String userId, String resource, String action);
    
    /**
     * 为用户添加权限策略
     * @param userId 用户ID
     * @param resource 资源
     * @param action 操作
     * @return 是否添加成功
     */
    boolean addPolicy(String userId, String resource, String action);
    
    /**
     * 删除用户的权限策略
     * @param userId 用户ID
     * @param resource 资源
     * @param action 操作
     * @return 是否删除成功
     */
    boolean removePolicy(String userId, String resource, String action);
    
    /**
     * 获取用户的所有权限
     * @param userId 用户ID
     * @return 权限策略列表，每个策略包含资源和操作
     */
    List<List<String>> getPermissionsForUser(String userId);
    
    /**
     * 获取所有策略
     * @return 所有权限策略
     */
    List<List<String>> getAllPolicies();
    
    /**
     * 为指定角色添加用户
     * @param userId 用户ID
     * @param role 角色名称
     * @return 是否添加成功
     */
    boolean addRoleForUser(String userId, String role);
    
    /**
     * 获取用户的所有角色
     * @param userId 用户ID
     * @return 角色列表
     */
    List<String> getRolesForUser(String userId);
    
    /**
     * 删除用户的角色
     * @param userId 用户ID
     * @param role 角色名称
     * @return 是否删除成功
     */
    boolean deleteRoleForUser(String userId, String role);
    
    /**
     * 删除用户的所有权限
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deletePermissionsForUser(String userId);
}
